Advancements in computing and network technologies now allow users to access different types of online content and services from almost any geographic location through a web browser or other client application installed at their respective computing devices. For example, a web service may be provided to user devices over the Internet by multiple computing devices operating within a data center or distributed computing system. Such computing devices may include, but are not limited to, servers, storage devices, routers, gateways, and other types of networked computing devices, which may be distributed across a local or wide area network associated with a particular service provider.
A distributed computing system often encounters performance bottlenecks and scalability problems that may prevent the system from effectively controlling resource usage by managing workloads distributed across multiple computing devices within the system. A distributed computing system may employ a hardware or software load balancer and/or an application delivery controller (“ADC”) to monitor system resources and manage workloads distributed across the various computing devices within the system. For example, such a load balancer may be used to receive incoming requests from different clients or end users of a web service and distribute multiple data packets related to the received requests for processing by different back-end servers within the system. Further, the load balancer may be used to determine the load state of each remote back-end server device used to process data packets based on measurements of resource usage at that particular server, and may distribute traffic between the servers based on how busy each server is.
One useful technique for load balancing or distributing involves a technology referred to as software defined networking (“SDN”). Software defined networking is an approach that allows network administrators to manage network services through abstraction of lower level functionality, such as by decoupling the system that makes traffic control decisions (e.g., the “control plane”) from the underlying systems that forward traffic to the selected destination (e.g., the “data plane”). One mechanism for enabling software defined networking is the Open Flow protocol, which is promoted by the Open Networking Foundation. OpenFlow is a communications protocol that gives access to the forwarding plane of a network switch or router over the network. In other words, OpenFlow allows the path of network packets through the network of switches to be determined programmatically by software using various fields in a data packet header or even arbitrary criteria. The separation of the control from the forwarding allows for more sophisticated traffic management than is feasible using access control lists (“ACLs”) and forwarding protocols. The basic function of OpenFlow is to give external software direct access to program a switch's forwarding table.
Conventional load balancers and/or ADCs may use specialized hardware, which may increase costs. To avoid expensive purchases and increase capacity of a system using load balancers, Direct Server Return (“DSR”) optimization may be used to reduce the traffic through the load balancer. However, use of DSR optimization is often limited to layer-2 domains to preserve the layer-3 header information. Further, DSR does not allow a load balancer to detect when a connection from a client is closed, and DSR does not allow for port address translations.